﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using quinielonModel;
using System.Data.Objects.DataClasses;
using System.Collections;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string[] GetCompletionList(string prefixText, int count, string contextKey)
    {
        quinielonEntities db = new quinielonEntities();
        var sugerencia = (from e in db.equipo where e.equipo1.Contains(prefixText) select e.equipo1).ToArray();
        db.Dispose();
        return sugerencia;
        //return new string[0];
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        CrearQuiniela();
        NotificarUsuarios();

    }

    private void NotificarUsuarios()
    {
        //quinielonEntities db = new quinielonEntities();
    }

    private void CrearQuiniela()
    {
        //Crear nueva quiniela con los datos introducidos

        quinielonEntities db = new quinielonEntities();
        
        //Si no se han metido los resultados de la jornada anterior no se podrán meter una quiniela nueva
        if (db.quiniela.ToList().Count != 0)
        {

            var conResultado = (from col in db.columna
                                join quini in db.quiniela on col.quiniela equals quini
                                where quini.activa == true && col.aciertos>0
                                select col.aciertos).FirstOrDefault();

            if (conResultado == 0 || conResultado.Equals(null))
            {
                Session["Error"] = "Para poder crear una quiniela nueva es necesario poner los resultados de la actual. Puedes hacerlo en 'Chiquiniela de la Jornada'";
                Response.Redirect("nuevaError.aspx", true);
            }


            quiniela quiniel = (from quin in db.quiniela where quin.activa == true select quin).First();
            quiniel.activa = false;
        }
        jornada j = (from jor in db.jornada where jor.id == DropDownList1.SelectedIndex + 1 select jor).FirstOrDefault();
        quiniela q = new quiniela();
        q.activa = true;
        q.año = j.fecha.Value.Year;
        q.jornada = j;

        usuario usuario = (usuario)Session["user"];

        //Columnas para todos los usuarios
        try
        {
            columna c;

            foreach (usuario usu in db.usuario)
            {
                c = new columna();
                c.usuario = usu;
                c.quiniela = q;
                AddPartidos(c, db);
                q.columna.Add(c);
                db.AddTocolumna(c);
            }

            db.AddToquiniela(q);
            db.SaveChanges();
            db.Dispose();
            Utils.AppRequest("Ya está disponible la nueva chiquiniela de esta jornada");
            Response.Redirect("nuevaSuccess.aspx", false);

        }
        catch (Exception e)
        {
            db.Dispose();
            Session["Error"] = "Error: por favor revisa los datos y vuelve a intentarlo";
            Response.Redirect("nuevaError.aspx", true);
        }
        

    }

    private void AddPartidos(columna c, quinielonEntities db)
    {
        //Partidos
        partido p;
        for (int i = 1; i <= 30; i = i + 2)
        {
            p = new partido();
            p.columna = c;
            p.e_local = ((TextBox)Utils.FindControlIterative(this.Controls[0], "TextBox" + i.ToString())).Text;
            p.e_visitante = ((TextBox)Utils.FindControlIterative(this.Controls[0], "TextBox" + (i + 1).ToString())).Text;
            p.n_partido = (i + 1) / 2;
            c.partido.Add(p);
            db.AddTopartido(p);
        }
    }
    
}